# filename：logs.py
# 封装日志
import logging      # 导入日志库
from configs.read_config import *   # 导入写好的读取配置文件的模块包

father_path= os.path.dirname(os.path.dirname(__file__))   # 获取当前文件(logs.py)的上上级目录路径 ....Api_Auto_Test 项目所在目录
log_path_f = os.path.join(father_path, 'logs_file')     # 拼接存放日志文件的目录路径
log_file_name = str(datetime.date.today()) + '.log'     # 设置日志文件名称 存放每天的日志
log_file_path = os.path.join(log_path_f, log_file_name)     # 拼接存放日志文件的绝对路径
# print(log_file_path)

# 日志格式
log_format = "%(asctime)s [%(name)s] [%(filename)s] [line:%(lineno)d] %(levelname)s -- %(message)s"


class Logs:
    # 创建日志对象时初始化数据
    def __init__(self, logger_name=None):
        # 创建记录器对象 设置记录器的等级
        self.logger = logging.getLogger(logger_name)
        self.logger.setLevel(logging.DEBUG)
        # 创建文件处理器 设置处理器的等级，日志输出到指定文件中，文件不存在时会自动创建，不会报错
        self.handle = logging.FileHandler(log_file_path, encoding='UTF-8')
        self.handle.setLevel(logging.DEBUG)
        # 创建控制台处理器 设置处理器的等级，在控制台输出日志
        self.console = logging.StreamHandler()
        self.console.setLevel(logging.DEBUG)
        # 设置格式器 给处理器添加格式器
        self.format = logging.Formatter(log_format)
        self.handle.setFormatter(self.format)
        self.console.setFormatter(self.format)
        # 给记录器添加处理器
        self.logger.addHandler(self.handle)
        self.logger.addHandler(self.console)

    # 获取记录器
    def get_logger(self):
        return self.logger



if __name__ == '__main__':
    logger = Logs('日志模块封装').get_logger()    # 创建实例对象 获取记录器
    # print(logger)
    logger.info("日志模块封装完成")

